home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
DTP
/
DTP_TEX
/
3239.ZIP
/
DVIMTP.ZIP
/
SETCHAR.H
< prev
next >
Wrap
Text File
|
1987-10-26
|
1KB
|
51 lines
/* -*-C-*- setchar.h */
/*-->setchar*/
/**********************************************************************/
/****************************** setchar *******************************/
/**********************************************************************/
void
setchar(c, update_h)
register BYTE c;
register BOOLEAN update_h;
{
register struct char_entry *tcharptr; /* temporary char_entry pointer */
if (DBGOPT(DBG_SET_TEXT))
{
(void)fprintf(stderr,"setchar('");
if (isprint(c))
(void)putc(c,stderr);
else
(void)fprintf(stderr,"\\%03o",(int)c);
(void)fprintf(stderr,"'<%d>) (hh,vv) = (%ld,%ld) font name <%s>",
(int)c, (long)hh, (long)vv, fontptr->n);
NEWLINE(stderr);
}
tcharptr = &(fontptr->ch[c]);
if (((hh - tcharptr->xoffp + tcharptr->pxlw) <= XSIZE)
&& (hh >= 0)
&& (vv <= YSIZE)
&& (vv >= 0))
{ /* character fits entirely on page */
moveto( hh, (COORDINATE)(YSIZE-vv));
dispchar(c);
}
else if (DBGOPT(DBG_OFF_PAGE) && !quiet)
{ /* character is off page -- discard it */
(void)fprintf(stderr,
"setchar(): Char %c [10#%3d 8#%03o 16#%02x] off page.",
isprint(c) ? c : '?',c,c,c);
NEWLINE(stderr);
}
if (update_h)
{
h += (INT32)tcharptr->tfmw;
hh += (COORDINATE)tcharptr->pxlw;
hh = (COORDINATE)(fixpos(hh-lmargin,h,conv) + lmargin);
}
}